#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

//C语言文件调用接口回顾
//int main(){
//  //一定要更改到有权限的路径
//  //chdir("/home/lin");
//  printf("pid:%d\n",getpid());
//  FILE* fp = fopen("log.txt","a");//当前工作目录并没有log.txt文件，'w'参数在没有该文件的情况下会新建该文件，path参数如果不带路径，默认在当前路径下生成log.txt文件
//  if(fp==NULL){
//    perror("fopen");
//    return 1;
//  }
//  const char* message="abcd";
//  //fwrite(message,strlen(message),1,stdout);
//  fprintf(stdout,"%s:%d\n",message,1234);
//  fclose(fp);
//  return 0;
//}

//比特位级别的传参方式
//#define ONE (1<<0)//1
//#define TWO (1<<1)//2
//#define THREE (1<<2)//4
//#define FOUR (1<<3)//8
//
//void show(int flags){
//  if(flags&ONE)printf("hello function1\n");
//  if(flags&TWO)printf("hello function2\n");
//  if(flags&THREE)printf("hello function3\n");
//  if(flags&FOUR)printf("hello function4\n");
//}
//
//int main(){
//  show(ONE);
//  printf("-------------------------\n");
//  show(TWO);
//  printf("-------------------------\n");
//  show(ONE|TWO);
//  printf("-------------------------\n");
//  show(ONE|TWO|THREE);
//  printf("-------------------------\n");
//  show(ONE|THREE);
//  printf("-------------------------\n");
//  show(THREE|FOUR);
//  printf("-------------------------\n");
//  show(FOUR);
//}
//
//系统调用接口
int main(){
  close(1);
  int n=printf("stdin->fd:%d\n",stdin->_fileno);
  printf("stdout->fd:%d\n",stdout->_fileno);
  printf("stderr->fd:%d\n",stderr->_fileno);
  fprintf(stderr,"printf ret:%d\n",n);
  //char buffer[1024];
  //ssize_t s=read(0,buffer,sizeof(buffer));
  //if(s<0)return 1;
  //buffer[s]='\0';//C语言中，字符串以空字符'\0'结尾
  //printf("echo:%s\n",buffer);
  //umask(0);//在这个进程设置umask为0，这个设置不会影响整个系统，但会影响整个进程。
  //int fd1=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
  //int fd2=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
  //int fd3=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
  //int fd4=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
  //if(fd1<0){
  //  printf("open file error\n");
  //  return 1;
  //}
  //printf("fd:%d\n",fd1);
  //printf("fd:%d\n",fd2);
  //printf("fd:%d\n",fd3);
  //printf("fd:%d\n",fd4);
  //const char* message="aaa";
  //write(fd,message,strlen(message));
  //close(fd);
  
  //测试标准输入输出
  //const char* msg="hello linux\n";
  //write(1,msg,strlen(msg));
  //write(2,msg,strlen(msg));
  return 0;
}

